// services/api.js
import { post, get, uploadFile, processOssUrl } from '../utils/http'

// API 基础URL
const BASE_URL = 'https://api.ksgfilms.com/ksg'
// const BASE_URL = 'http://192.168.2.42:8095/ksg'

/**
 * 用户相关的API
 */
export const userApi = {
  /**
   * 微信登录
   * @param {string} code 微信登录凭证
   * @returns {Promise} 登录结果
   */
  wxLogin(code) {
    return post(`${BASE_URL}/user/wx-login`, { code })
  },

  /**
   * 获取手机号
   * @param {string} code 手机号获取凭证
   * @returns {Promise} 手机号结果
   */
  getPhoneNumber(code) {
    return post(`${BASE_URL}/auth/phone-login`, { code })
  },

  

  /**
   * 发送验证码
   * @param {string} phone 手机号
   * @returns {Promise} 手机号结果
   */
  sendVerificationCode(phone) {
    return post(`${BASE_URL}/auth/sendsms`, { phone: phone, type: 1 })
  },

  /**
   * 手机号+验证码登录
   * @param data {phone, code}
   * @returns {Promise} 手机号结果
   */
  phoneLogin(data) {
    return post(`${BASE_URL}/auth/update/register`, data)
  },

  /**
   * 账号+密码登录
   * @param data {account, pwd}
   * @returns {Promise} 登录令牌相关信息
   */
  pwdLogin(data) {
    return post(`${BASE_URL}/auth/pwd/login`, data)
  },
  
  /**
   * 根据原密码修改密码
   * @param data {pwd, newPwd}
   * @returns {Promise} 正常data.status===200代表修改成功
   */
  modifyPwd(data) {
    return post(`${BASE_URL}/auth/update/pwd`, data)
  },

  /**
   * 获取用户通知信息
   * @returns {Promise} 通知信息
   */
  noticeList() {
    return get(`${BASE_URL}/user/notice/list`)
  },

  /**
   * 获取用户信息
   * @returns {Promise} 用户信息
   */
  getUserInfo() {
    return get(`${BASE_URL}/users/get`)
      .then(res => {
        // 处理返回的用户信息中的头像URL
        if (res.status === 200 && res.data) {
          if (res.data.headImg) {
            res.data.headImg = processOssUrl(res.data.headImg);
          }
          if (res.data.avatarUrl) {
            res.data.avatarUrl = processOssUrl(res.data.avatarUrl);
          }
        }
        return res;
      });
  },

  /**
   * 更新用户信息
   * @param {Object} userInfo 用户信息
   * @returns {Promise} 更新结果
   */
  updateUserInfo(userInfo) {
    return post(`${BASE_URL}/users/update/info`, userInfo)
  },

  /**
   * 上传用户头像
   * @param {string} filePath 本地文件路径
   * @returns {Promise} 上传结果
   */
  uploadAvatar(filePath) {
    // 获取文件扩展名
    const ext = filePath.substring(filePath.lastIndexOf('.') + 1).toLowerCase();
    // 生成随机文件名前缀，避免文件名冲突
    const randomPrefix = Math.random().toString(36).substring(2, 10);
    // 构建表单数据
    const formData = {
      fileType: 'USER_AVATAR',
      fileName: `avatar_${randomPrefix}.${ext || 'jpg'}`,
      // fileExt可以帮助服务器正确识别文件类型
      fileExt: ext || 'jpg'
    };
    
    return uploadFile(`${BASE_URL}/sys/file/upload`, filePath, 'file', formData)
      .then(res => {
        // 处理响应中的文件URL，确保包含OSS前缀
        if (res.status === 200 && res.data) {
          if (res.data.filePath) {
            res.data.filePath = processOssUrl(res.data.filePath);
          }
          if (res.data.fileUrl) {
            res.data.fileUrl = processOssUrl(res.data.fileUrl);
          }
          if (res.data.fileName) {
            res.data.fileName = processOssUrl(res.data.fileName);
          }
        }
        return res;
      });
  }
}

/**
 * 产品相关的API
 */
export const productApi = {
  /**
   * 获取产品列表
   * @param {Object} params 查询参数
   * @returns {Promise} 产品列表
   */
  getCaseList(params) {
    return post(`${BASE_URL}/caseInfo/list`, params)
  },

  /**
   * 获取产品详情
   * @param {string} caseId 案例ID
   * @returns {Promise} 产品详情
   */
  getCaseDetail(caseId) {
    return post(`${BASE_URL}/caseInfo/details`, { caseId })
  }
}

/**
 * 门店相关的API
 */
export const storeApi = {
  /**
   * 获取门店列表
   * @param {Object} params 查询参数，包含 search 属性用于搜索, lat: 纬度, lng: 经度
   * @returns {Promise} 门店列表
   */
  getStoreList(params = {}) {
    return post(`${BASE_URL}/store/list`, params)
  }
}

/**
 * 质保相关的API
 */
export const warrantyApi = {
    //质保查询
    queryWarrantyInfo(params = {}) {
      return post(`${BASE_URL}/warranty/list`, params)
    },
    //质保详情查询
    queryWarrantyDetails(id) {
      return post(`${BASE_URL}/warranty/details`, { 'warrantyId': id })
    },
    //质保录入
    addWarrantyInfo(params = {}) {
      return post(`${BASE_URL}/warranty/saveWarranty`, params)
    },
    //我的质保列表
    getMyWarrantyList(params = {}) {
      return post(`${BASE_URL}/warranty/saveWarranty`, params)
    },
    queryProductSeriesList(params = {}) {
      return post(`${BASE_URL}/core/productSeriesList`, params)
    },
    queryVin(params = {}) {
      return post(`${BASE_URL}/core/OCRVIN`, params)
    },
    /**
     * 获取库存列表（卷芯码列表）
     * @param {Object} params 查询参数 {search: '搜索内容', type: 1}
     * @returns {Promise} 库存列表
     */
    stockList(params = {}) {
      return post(`${BASE_URL}/stockList`, params)
    },
    /**
   * 上传文件
   * @param {string} filePath 本地文件路径
   * @param {string} type 文件类型 【'VIN_OCR': 'ORC识别'，'SIGNAL_PIC': '装贴效果图',
   *  'KSG_PIC': '车架号/卷芯码图', 'QX_IMG': '清晰卷号图', 'MD_IMG': '车辆与店招图',
   *  'COLOR_CHANGE': '改色车辆照片'】
   * @returns {Promise} 上传结果
   */
  uploadFile(filePath, type) {
    // 获取文件扩展名
    const ext = filePath.substring(filePath.lastIndexOf('.') + 1).toLowerCase();
    // 生成随机文件名前缀，避免文件名冲突
    const randomPrefix = Math.random().toString(36).substring(2, 10);
    // 构建表单数据
    const formData = {
      fileType: type,
      fileName: `${type}_${randomPrefix}.${ext || 'jpg'}`,
      // fileExt可以帮助服务器正确识别文件类型
      fileExt: ext || 'jpg'
    };
    
    return uploadFile(`${BASE_URL}/sys/file/upload`, filePath, 'file', formData)
      .then(res => {
        // 处理响应中的文件URL，确保包含OSS前缀
        if (res.status === 200 && res.data) {
          if (res.data.filePath) {
            res.data.filePath = processOssUrl(res.data.filePath);
          }
          if (res.data.fileUrl) {
            res.data.fileUrl = processOssUrl(res.data.fileUrl);
          }
          if (res.data.fileName) {
            res.data.fileName = processOssUrl(res.data.fileName);
          }
        }
        return res;
      });
  }
}

  export const sysApi = {
    /**
     * 获取字典数据列表
     * @param String dictName 字典类型
     * dictName:['case_label：案例分类', 'goods_type: 商品分类']
     * @returns {Promise} 字典数据
     */
    dictList(dictName) {
      return post(`${BASE_URL}/caseInfo/dictList`, { dictName })
    }
  }

  export const merchandiseApi = {
    /**
     * 获取周边商品列表
     * @param Json {pageNo, pageSize, searchContent, order}
     * @returns {Promise} 商品数据列表
     */
    list(params = {}) {
      return post(`${BASE_URL}/periphery/list`, params)
    },
    /**
     * 获取周边商品详情
     * @param autoId
     * @returns {Promise}
     */
    details(autoId) {
      return post(`${BASE_URL}/periphery/details`, { autoId })
    },
    /**
     * 周边商品点赞
     * @param autoId
     * @returns {Promise}
     */
    doLike(autoId) {
      return post(`${BASE_URL}/periphery/like/save`, { autoId })
    },
  }

  export const quoteApi = {
    /**
     * 获取产品列表
     * @returns {Promise}
     */
    queryProductList(params = {}) {
      return post(`${BASE_URL}/core/productNameList`, params)
    },
    //品牌查询
    queryBrandList(params = {}) {
      return post(`${BASE_URL}/core/brand`, params);
    },
    //品牌分组查询
    queryBrandGroupList(params = {}) {
      return post(`${BASE_URL}/core/brandGroup`, params);
    },
    //获取车辆型号列表
    queryCarModelList(params = {}) {
      console.log(params)
      return post(`${BASE_URL}/core/series`, params);
    },
    //费用预估
    queryPriceInfo(params = {}) {
      return post(`${BASE_URL}/core/priceInfo`, params);
    },
    //获取窗膜类型
    queryWindowTypeList(params = {}) {
      return post(`${BASE_URL}/core/windowTypeList`, params);
    },
    //窗膜价格查询
    queryWindowPrice(params = {}) {
      return post(`${BASE_URL}/core/windowPrice`, params);
    },
  }

/**
 * 新闻资讯相关的API
 */
export const newsApi = {
  /**
   * 获取新闻列表
   * @param {Object} params 查询参数 {pageNo, pageSize}
   * @returns {Promise} 新闻列表
   */
  getNewsList(params = {}) {
    return post(`${BASE_URL}/news/list`, params)
  }
}

/**
 * 汽车改色相关的API
 */
export const colorChangeApi = {
  /**
   * 获取色卡列表
   * @param {Object} params 查询参数 {pageNo}
   * @returns {Promise} 色卡列表
   */
  getColorList(params = {}) {
    return post(`${BASE_URL}/colorchange/color/list`, params)
  },

  /**
   * 提交渲染信息
   * @param {Object} params 查询参数 {carImgUrl, colorCardId}
   * @returns {Promise} 渲染结果
   */
  saveColorChange(params = {}) {
    return post(`${BASE_URL}/colorchange/save`, params)
  },

  /**
   * 获取用户的渲染历史列表
   * @param {Object} params 查询参数 {pageNo}
   * @returns {Promise} 渲染历史列表
   */
  getColorChangeHistory(params = {}) {
    return post(`${BASE_URL}/colorchange/list`, params)
  }
}

export default {
  user: userApi,
  product: productApi,
  store: storeApi,
  warranty: warrantyApi,
  system: sysApi,
  merchandise: merchandiseApi,
  quote: quoteApi,
  news: newsApi,
  colorChange: colorChangeApi
} 